package com.alibaba.tamper.performace; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import org.apache.commons.beanutils.BeanUtils; import com.alibaba.tamper.BeanMap; /** * @author jianghang 2011-6-10 下午04:20:31 */ public class MapPerformance extends AbstractPerformance { public static void main(String args[]) throws Exception { final int testCount = 1000 * 100 * 20; CopyBean bean = getBean(); // BeanMap测试 final CopyBean beanMapTarget = new CopyBean(); final BeanMap beanMap = BeanMap.create(CopyBean.class); testTemplate(new TestCallback() { public String getName() { return "BeanMap"; } public CopyBean call(CopyBean source) { try { Map result = beanMap.describe(source); beanMap.populate(beanMapTarget, result); } catch (Exception e) { e.printStackTrace(); } return beanMapTarget; } }, bean, testCount); // BeanUtils测试 final CopyBean beanUtilsTarget = new CopyBean(); testTemplate(new TestCallback() { public String getName() { return "BeanUtils"; } public CopyBean call(CopyBean source) { try { Map result = BeanUtils.describe(source); BeanUtils.populate(beanUtilsTarget, result); } catch (Exception e) { e.printStackTrace(); } return beanUtilsTarget; } }, bean, testCount); // Cglib测试 final CopyBean cglibTarget = new CopyBean(); final net.sf.cglib.beans.BeanMap cglibBeanMap = net.sf.cglib.beans.BeanMap.create(bean); testTemplate(new TestCallback() { public String getName() { return "Cglib.BeanMap"; } public CopyBean call(CopyBean source) { try { cglibBeanMap.setBean(source); Set set = cglibBeanMap.keySet(); Map result = new HashMap(); for (Iterator iter = set.iterator(); iter.hasNext();) { Object key = iter.next(); result.put(key, cglibBeanMap.get(key)); } cglibBeanMap.setBean(cglibTarget); cglibBeanMap.putAll(result); } catch (Exception e) { e.printStackTrace(); } return beanUtilsTarget; } }, bean, testCount); } }